﻿using System.Collections.Generic;
using System.Web.Mvc;
using Dogshow.Model;
using Dogshow.Web.Models;
using Korisnik = Dogshow.Model.Korisnik;
using System.Linq;

namespace Dogshow.Web.ViewModels.Korisnici
{
    public class KorisnikViewModel
    {
        public IEnumerable<VrstaKorisnika> VrsteKorisnika { get; set; }
        
        public Korisnik Korisnik { get; set; }

        public IEnumerable<KinoloskoDrustvo> KinoloskaDrustva { get; set; }

        public IEnumerable<Korisnik> Korisnici { get; set; }

        public int UkupnoAdministratora
        {
            get { return Korisnici.Count(x => x is Administrator); }
        }

        public int UkupnoKinoloskihDrustava
        {
            get { return Korisnici.Count(x => x is KorisnikKinoloskoDrustvo); }
        }

        public int UkupnoKorisnika
        {
            get { return Korisnici.Count(x => x.VrstaKorisnika == Models.VrsteKorisnika.Korisnik); }
        }

        public int Ukupno
        {
            get { return Korisnici.Count(); }
        }

        public KorisnikViewModel()
        {
            VrsteKorisnika = new List<VrstaKorisnika>()
                                 {
                                     new VrstaKorisnika{Id = Models.VrsteKorisnika.Administrator, Naziv = "Administrator"},
                                     new VrstaKorisnika{Id = Models.VrsteKorisnika.Korisnik, Naziv = "Korisnik"},
                                     new VrstaKorisnika{Id = Models.VrsteKorisnika.KinoloskoDrustvo, Naziv = "Kinološko društvo"},
                                 };
            Korisnik = new Administrator(){VrstaKorisnika = Models.VrsteKorisnika.Administrator};
            KinoloskaDrustva = new List<KinoloskoDrustvo>();
            Korisnici = new List<Korisnik>();
        }

        public KorisnikViewModel(int? idVrsteKorisnika) : this()
        {
            if (!idVrsteKorisnika.HasValue)
            {
                Korisnik = new Korisnik(){VrstaKorisnika = Models.VrsteKorisnika.Korisnik};
            } else
            {
                if (idVrsteKorisnika.Value == Models.VrsteKorisnika.Administrator)
                {
                    Korisnik = new Administrator {VrstaKorisnika = idVrsteKorisnika.Value};
                }
                else if (idVrsteKorisnika.Value == Models.VrsteKorisnika.Korisnik)
                {
                    Korisnik = new Korisnik {VrstaKorisnika = idVrsteKorisnika.Value};
                } else
                {
                    Korisnik = new KorisnikKinoloskoDrustvo { VrstaKorisnika = idVrsteKorisnika.Value };
                }
            }
        }
    }
}